package com.spsa.persistencia.entidades;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.spsa.negocio.utilidades.EstadoArchivo;

@Entity
@Table(name="ESTADOINTERFAZ2")
public class EstadoInterfaz implements Serializable{
	@Id
	@GeneratedValue
	private Long id;
	private String codigoTienda;
	private String descripcionInterfaz;
	@Temporal(TemporalType.TIMESTAMP)
	private Date fechaUso;
	@Temporal(TemporalType.TIMESTAMP)
	private Date fechaProcesamiento;
	private int cantidadArchivos;
	@Enumerated(EnumType.STRING)
	private EstadoArchivo estadoArchivos;
	private boolean marcado;
	
	public EstadoInterfaz() {
		estadoArchivos = EstadoArchivo.NO_SE_ENCONTRO_NADA;
	}
	
	public int getCantidadArchivos() {
		return cantidadArchivos;
	}
	public void setCantidadArchivos(int cantidadArchivos) {
		this.cantidadArchivos = cantidadArchivos;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getCodigoTienda() {
		return codigoTienda;
	}
	public void setCodigoTienda(String idTienda) {
		this.codigoTienda = idTienda;
	}
	public String getDescripcionInterfaz() {
		return descripcionInterfaz;
	}
	public void setDescripcionInterfaz(String descripcionInterfaz) {
		this.descripcionInterfaz = descripcionInterfaz;
	}

	public Date getFechaUso() {
		return fechaUso;
	}

	public void setFechaUso(Date fechaUso) {
		this.fechaUso = fechaUso;
	}

	public Date getFechaProcesamiento() {
		return fechaProcesamiento;
	}

	public void setFechaProcesamiento(Date fechaProcesamiento) {
		this.fechaProcesamiento = fechaProcesamiento;
	}

	@Override
	public String toString() {
		return "EstadoInterfaz [id=" + id + ", codigoTienda=" + codigoTienda + ", descripcionInterfaz="
				+ descripcionInterfaz + ", fechaUso=" + fechaUso + ", fechaProcesamiento=" + fechaProcesamiento
				+ ", cantidadArchivos=" + cantidadArchivos + ", estadoArchivo=" + estadoArchivos + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + cantidadArchivos;
		result = prime * result + ((codigoTienda == null) ? 0 : codigoTienda.hashCode());
		result = prime * result + ((descripcionInterfaz == null) ? 0 : descripcionInterfaz.hashCode());
		result = prime * result + ((estadoArchivos == null) ? 0 : estadoArchivos.hashCode());
		result = prime * result + ((fechaProcesamiento == null) ? 0 : fechaProcesamiento.hashCode());
		result = prime * result + ((fechaUso == null) ? 0 : fechaUso.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		EstadoInterfaz other = (EstadoInterfaz) obj;
		if (cantidadArchivos != other.cantidadArchivos)
			return false;
		if (codigoTienda == null) {
			if (other.codigoTienda != null)
				return false;
		} else if (!codigoTienda.equals(other.codigoTienda))
			return false;
		if (descripcionInterfaz == null) {
			if (other.descripcionInterfaz != null)
				return false;
		} else if (!descripcionInterfaz.equals(other.descripcionInterfaz))
			return false;
		if (estadoArchivos != other.estadoArchivos)
			return false;
		if (fechaProcesamiento == null) {
			if (other.fechaProcesamiento != null)
				return false;
		} else if (!fechaProcesamiento.equals(other.fechaProcesamiento))
			return false;
		if (fechaUso == null) {
			if (other.fechaUso != null)
				return false;
		} else if (!fechaUso.equals(other.fechaUso))
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	public EstadoArchivo getEstadoArchivos() {
		return estadoArchivos;
	}

	public void setEstadoArchivos(EstadoArchivo estadoArchivos) {
		this.estadoArchivos = estadoArchivos;
	}

	public boolean isMarcado() {
		return marcado;
	}

	public void setMarcado(boolean marcado) {
		this.marcado = marcado;
	}
}
